package ar.republicagroup.gestion.services.impl;

import ar.republicagroup.gestion.config.RGroupAppConfig;
import ar.republicagroup.gestion.dao.CodigoPostalDAO;
import ar.republicagroup.gestion.entities.CodigoPostal;
import ar.republicagroup.gestion.services.ChequeServices;
import ar.republicagroup.gestion.services.CodigoPostalServices;
import java.util.List;

public class CodigoPostalServicesImpl implements CodigoPostalServices{

    CodigoPostalDAO codigoPostalDao;

    public void setCodigoPostalDao(CodigoPostalDAO codigoPostalDao) {
        this.codigoPostalDao = codigoPostalDao;
    }

    
    @Override
    public List<CodigoPostal> findEntities() {
       return codigoPostalDao.findEntities();
    }

    @Override
    public String insert(CodigoPostal beanCodigoPostal) {
       return codigoPostalDao.insert(beanCodigoPostal);
    }

    @Override
    public String update(CodigoPostal beanCodigoPostal) {
        return codigoPostalDao.update(beanCodigoPostal);
    }

    @Override
    public CodigoPostal get(Integer idcodigopostal) {
       return codigoPostalDao.get(idcodigopostal);
    }

    @Override
    public String delete(Integer idcodigopostal) {
       return codigoPostalDao.delete(idcodigopostal);
    }

    @Override
    public List<CodigoPostal> findCodigoPostalByCodigo(Integer codigopostal) {
       return codigoPostalDao.findCodigoPostalByCodigo(codigopostal);
    }

    @Override
    public String getOrigenOfCodigoPostalByCodigo(Integer codigoPostal) {
        
        /*Ciertos CP son de un origen pero no cumplen con la validación siguiente :
          Si codigoPostal <= 1999 entonces CAP
          Si codigoPostal >= 2000 entonces VC
          Por eso debe comprobarse primero si el CP que viene de param 
          existe en el archivo properties para determinar el Origen del Cheque 
          según este archivo 
          */
        
        /* Obtenemos los códigos exclusivos de CAP */
        String codigoPostalesCap[] = RGroupAppConfig.getProperty("CODIGOS_POSTALES_CAP").split(",");
        
        for (int i = 0; i < codigoPostalesCap.length; i++) {
            if(codigoPostal == Integer.parseInt(codigoPostalesCap[i])){
                return ChequeServices.ORIGEN_CAP_BSAS;
            }
        }
        
        /*Si la validación anterior no retornó resultado, entonces sí, el CP
         se valida de acuerdo al cálculo */
        
        if((codigoPostal >= 1) && (codigoPostal <= 1999)){
            return ChequeServices.ORIGEN_CAP_BSAS;
        } else {
            return ChequeServices.ORIGEN_VC;
        }
        
    }
    
}
